/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.hsos.samcomm.boundary;

import de.hsos.samcomm.forumManagement.entity.Entry;
import de.hsos.samcomm.forumManagement.entity.Forum;
import de.hsos.samcomm.userManagement.entity.Member;
import de.hsos.samcomm.forumManagement.controller.ForumDAO;
import de.hsos.samcomm.userManagement.controller.MemberDAO;
import java.util.List;
import java.io.Serializable;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.inject.Inject;

/**
 * Facade fuer die Community.
 *
 * @author felix
 */
@Singleton
@Startup
public class Community implements Serializable{
    @Inject
    private ForumDAO forumDAO;
    @Inject
    private MemberDAO memberDAO;

    /**
     * Default Konstruktor.
     */
    public Community() {}

    /*@PostConstruct
    public void init(){}*/

    /**
     * Testet ob der Login erfolgreich ist.
     *
     * @param nick
     * @param pw
     * @return true, wenn erfolgreich
     */
    public boolean login(String nick, String pw) {
        return memberDAO.login(nick, pw);
    }

    /**
     * Benutzer abonniert Forum. Benutzer wird in Forum eingetragen. Forum wird
     * bei Benutzer eingetragen.
     *
     * @param m
     * @param f
     */
    public void subscribeMemberInForum(Member m, Forum f) {
        forumDAO.addSubscriberToForum(m, f);
        memberDAO.addForumToSubscription(m, f);
    }

    /**
     * Forum erstellen.
     *
     * @param m
     * @param title
     * @return neues Forum
     */
    public Forum createForum(Member m, String title) {
        return forumDAO.createForum(m, title);
    }

    /**
     * Eintrag erstellen.
     *
     * @param author
     * @param forum
     * @param title
     * @param text
     * @return neuer Eintrag
     */
    public Entry createEntry(Member author, Forum forum, String title, String text) {
        return forumDAO.createEntry(author, forum, title, text);
    }

    /**
     * Benutzer erstellen.
     *
     * @param nickname
     * @param email
     * @param pwd
     * @return neuer Benutzer
     */
    public Member createMember(String nickname, String email, String pwd) {
        System.out.println("Community create Member");
        return memberDAO.createMember(nickname, email, pwd);
    }

    /**
     * Sucht alle Eintraege zu diesem Autor.
     *
     * @param author
     * @return gefilterte Eintraege
     */
    public List<Entry> findEntriesByAuthor(String author) {
        return forumDAO.findEntriesByAuthor(author);
    }

    /**
     * Sucht alle Eintraege zu diesem Titel.
     *
     * @param title
     * @return gefilterte Eintraege
     */
    public List<Entry> findEntriesByTitle(String title) {
        return forumDAO.findEntriesByTitle(title);
    }

    /**
     * Gibt alle Foren zurueck.
     *
     * @return alle Foren
     */
    public List<Forum> getForen() {
        return forumDAO.getForen();
    }

    /**
     * Gibt alle Benutzer zurueck.
     *
     * @return alle Benutzer
     */
    public List<Member> getMember() {
        return memberDAO.getMember();
    }
}
